﻿#pragma once

// 结构体Params，表示参考椭球参数
struct Params {
    double a;  // 长半轴（m）
    double f;  // 扁率
    double GM; // 地心引力常数（m^3/s^2）
    double w;  // 自转角速度（rad/s）
};

struct Azel { /* 卫星高度角 （rad）*/
    double azi;
    double ele;
};

class GNSSconsts {
public:
    GNSSconsts(); // 构造函数
    double getSpeedOfLight(); // 获取光速
    double getPi();           // 获取圆周率
    double getr2d();          /**/
    Params getParams();

private:
    double SpeedOfLight;    //  光速 (m/s)
    double Pi;              //　圆周率
    double r2d;             /* */

protected:
    Params Params;      //参考椭球参数
};

class BDSConsts :public GNSSconsts {
public:
    BDSConsts();
};

class GPSConstant :public GNSSconsts {
public:
    GPSConstant();
};

#define PI 3.141592654
#define D2R (PI/180.0)
#define R2D (180.0/PI)

/* WGS84 GPS 参考椭球参数 */
#define MARADIUS_WGS84  6378137.0/* 长半径 */
#define GM_WGS84  3.986005E14/* 地球引力常数 */
#define F_WGS84   1.0/298.257223563 /* 扁率 */
#define C2_WGS84  -4.8416685E-4/* 重力位球谐函数正常二阶带谐系数 */
#define OMEGA_WGS84  7.292115E-5/* 地球自转角速度 */

/* CGCS2000 BDS 参考椭球参数 */
#define MARADIUS_CGCS  6378137.0 /* 长半径 */
#define GM_CGCS  3.986004418E14  /* 地球引力常数 */
#define FLAT_CGCS   1.0/298.257222101 /* 扁率 */
#define OMEGA_CGCS  7.292115E-5  /* 地球自转角速度 */

/* PZ-90 GLONASS 参考椭球参数 */
#define MARADIUS_PZ90  6378136.0 /* 长半径 */
#define GM_PZ90  3.9860044E14  /* 地球引力常数 */
#define FLAT_PZ90   1.0/298.257839303 /* 扁率 */
#define OMEGA_PZ90  7.292115E-5  /* 地球自转角速度 */